luci-mod-status: DHCP; properly handle lease creation with DUID & IAID
authorPaul Donald <[email protected]>
Mon, 27 Oct 2025 15:50:58 +0000 (16:50 +0100)
committerPaul Donald <[email protected]>
Mon, 27 Oct 2025 15:51:00 +0000 (16:51 +0100)
Closes #8041

Signed-off-by: Paul Donald <[email protected]>
modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js

index aa03bb9ef2938b3e23b0d0f244146f3ab74c2cc1..8e25622d5875d86ccd11e77407c24220d3611662 100644 (file)
@@ -51,12 +51,14 @@ return baseclass.extend({
                ev.currentTarget.disabled = true;
                ev.currentTarget.blur();
 
-               var cfg = uci.add('dhcp', 'host'),
-                   ip6arr = lease.ip6addrs[0] ? validation.parseIPv6(lease.ip6addrs[0].replace(/\/128$/,'')) : null,
-                   duid_iaid = lease.duid.toUpperCase();
-
-               if (lease.iaid)
-                       duid_iaid += '%' + lease.iaid;
+               const cfg = uci.add('dhcp', 'host');
+               const ip6addr = lease.ip6addrs?.[0]?.replace(/\/128$/, '');
+               const ip6arr = ip6addr ? validation.parseIPv6(ip6addr) : null;
+
+               // Combine DUID and IAID if both available
+               let duid_iaid = lease.duid ? lease.duid.toUpperCase() : null;
+               if (duid_iaid && lease.iaid)
+                       duid_iaid += `%${lease.iaid}`;
 
                uci.set('dhcp', cfg, 'name', lease.hostname);
                uci.set('dhcp', cfg, 'duid', duid_iaid);